🧮 Bài 10: JavaScript Operator Precedence, Errors, Scope

Thứ tự toán tử, lỗi và phạm vi biến trong JavaScript

← Quay lại trang chính

1. 🔢 Operator Precedence (Thứ tự ưu tiên toán tử)

Operator Precedence quyết định toán tử nào được thực hiện trước trong một biểu thức phức tạp.

precedence.js
console.log(2 + 3 * 4); // 14 (nhân trước, cộng sau)
console.log((2 + 3) * 4); // 20 (ngoặc ưu tiên cao nhất)
console.log(10 - 2 ** 2); // 6 (lũy thừa trước, trừ sau)
console.log(10 / 2 + 3); // 8 (chia trước, cộng sau)

🎮 Thử ngay: Operator Precedence

2. ⚠️ JavaScript Errors (Lỗi)

JavaScript có nhiều loại lỗi: SyntaxError, ReferenceError, TypeError... Có thể xử lý lỗi bằng try...catch.

errors.js
try {
    let x = y + 1; // ReferenceError: y chưa được khai báo
} catch (err) {
    console.log('Lỗi:', err.name);
}

try {
    JSON.parse('{bad json}'); // SyntaxError
} catch (err) {
    console.log('Lỗi:', err.message);
}

🎮 Thử ngay: Errors

3. 📦 JavaScript Scope (Phạm vi biến)

Scope là phạm vi mà biến có thể truy cập được. Có 3 loại chính: Global, Function, Block (let, const).

scope.js
let globalVar = "global";
function testScope() {
    let functionVar = "function";
    if (true) {
        let blockVar = "block";
        console.log(globalVar, functionVar, blockVar); // Truy cập được cả 3
    }
    // console.log(blockVar); // Lỗi: blockVar chỉ tồn tại trong block
}
testScope();

🎮 Thử ngay: Scope

📝 Bài tập thực hành

  1. Bài 1: Tính giá trị biểu thức
    Input: Một biểu thức toán học.
    Output: Giá trị kết quả (lưu ý thứ tự toán tử).
  2. Bài 2: Phát hiện lỗi
    Input: Một đoạn code JavaScript.
    Output: Tên lỗi (nếu có) hoặc "Không có lỗi".
  3. Bài 3: Kiểm tra phạm vi biến
    Input: Tên biến.
    Output: Biến thuộc phạm vi nào (global/function/block).
Hãy thử giải các bài tập này và kiểm tra kết quả bằng các demo phía trên hoặc trực tiếp trên trình duyệt console!